const { app, BrowserWindow, ipcMain, dialog, Menu } = require('electron')
const path = require('path')
const url = require('url')

let win

function createWindow() {
  win = new BrowserWindow({ width: 800, height: 600 })

  win.loadURL(url.format({
    pathname: path.join(__dirname, 'index.html'),
    protocol: 'file:',
    slashes: true
  }))

  // win.webContents.openDevTools()
  Menu.setApplicationMenu(null)

  win.on('closed', () => {
    win = null
  })
}

app.on('ready', createWindow)

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

app.on('activate', () => {
  if (win === null) {
    createWindow()
  }
})

ipcMain.on('Browse', (event, arg) => {
  console.log(arg)
  switch (arg) {
    case 'File':
      BrowseFile(event)
      break
    case 'Folder':
      BrowseFolder(event)
      break
    default:
      break
  }
})

function BrowseFile(event) {
  dialog.showOpenDialog(
    win,
    {
      properties: ['openFile'],
      filters: [
        { name: 'Binary', extensions: ['bin'] }
      ]
    },
    (filePaths) => {
      let result = {
        type: 'File'
      }
      if (filePaths === undefined) {
        result.path = ['']
      } else {
        result.path = filePaths
      }

      event.sender.send('BrowseResult', result)
    })
}

function BrowseFolder(event) {
  dialog.showOpenDialog(
    win,
    {
      properties: ['openDirectory'],
    },
    (filePaths) => {
      let result = {
        type: 'Folder'
      }
      if (filePaths === undefined) {
        result.path = ['']
      } else {
        result.path = filePaths
      }
      event.sender.send('BrowseResult', result)
    })
}
